package com.lightboat.system.domain.request;

import com.lightboat.common.annotation.Excel;
import com.lightboat.common.core.domain.BaseEntity;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.media.SchemaProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;

/**
 * 售后查询请求
 * 
 * @author lightboat
 * @date 2025-09-09
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@Schema(title = "售后查询请求")
public class CrmAfterSaleQueryRequest extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /** 售后ID */
    @SchemaProperty(name = "售后ID")
    private Long afterSaleId;

    /** 售后ID */
    @SchemaProperty(name = "外部售后ID")
    @Excel(name = "外部售后ID")
    private String externalAfterSaleId;

    /** 售后编号 */
    @SchemaProperty(name = "售后编号")
    @Excel(name = "售后编号")
    private String afterSaleNo;

    /** 订单ID */
    @SchemaProperty(name = "订单ID")
    @Excel(name = "订单ID")
    private Long orderId;

    /** 外部订单ID */
    @SchemaProperty(name = "外部订单ID")
    @Excel(name = "外部订单ID")
    private String externalOrderId;

    /** 店铺ID */
    @SchemaProperty(name = "店铺ID")
    @Excel(name = "店铺ID")
    private Long shopId;

    /** 门店ID */
    @SchemaProperty(name = "门店ID")
    @Excel(name = "门店ID")
    private Long storeId;

    /** 第三方门店编码 */
    @SchemaProperty(name = "第三方门店编码")
    @Excel(name = "第三方门店编码")
    private String tpStoreCode;

    /** 用户ID */
    @SchemaProperty(name = "用户ID")
    @Excel(name = "用户ID")
    private Long userId;

    /** 售后类别（1系统 2复购） */
    @SchemaProperty(name = "售后类别（1系统 2复购）")
    @Excel(name = "售后类别", readConverterExp = "1=系统,2=复购")
    private Integer afterSaleType;

    /** 退单类型（1子单 2整单） */
    @SchemaProperty(name = "退单类型（1子单 2整单）")
    @Excel(name = "退单类型", readConverterExp = "1=子单,2=整单")
    private Integer refundType;

    /** 售后类型（1仅客诉 2仅退款 3退货退款） */
    @SchemaProperty(name = "售后类型（1仅客诉 2仅退款 3退货退款）")
    @Excel(name = "售后类型", readConverterExp = "1=仅客诉,2=仅退款,3=退货退款")
    private Integer type;

    /** 售后状态 */
    @SchemaProperty(name = "售后状态")
    @Excel(name = "售后状态")
    private Integer status;

    /** 订单发货状态（1未发货 2已发货） */
    @SchemaProperty(name = "订单发货状态（1未发货 2已发货）")
    @Excel(name = "订单发货状态", readConverterExp = "1=未发货,2=已发货")
    private Integer sendStatus;

    /** 物流公司 */
    @SchemaProperty(name = "物流公司")
    @Excel(name = "物流公司")
    private String returnDeliverName;

    /** 用户寄回物流单号 */
    @SchemaProperty(name = "用户寄回物流单号")
    @Excel(name = "用户寄回物流单号")
    private String returnDeliverNo;

    /** 用户联系方式 */
    @SchemaProperty(name = "用户联系方式")
    @Excel(name = "用户联系方式")
    private String returnPhone;

    /** 订单状态 */
    @SchemaProperty(name = "订单状态")
    @Excel(name = "订单状态")
    private Integer orderStatus;

    /** 商品名称 */
    @SchemaProperty(name = "商品名称")
    @Excel(name = "商品名称")
    private String productName;
}
